This invention relates generally to computer mass memory and more specifically to automatic configuration of primary and secondary devices for personal computers.
For personal computers using Intel compatible microprocessors, peripheral devices (for example, magnetic disk drives, compact disk drives, tape drives, and some devices other than mass memory devices) commonly use an industry specified bus interface called AT Attachment (ATA). The computer systems support up to two ATA host adapters (which may be combined on a single printed circuit board), each of which can support up to two peripheral devices. For each host adapter, there may be one primary device (or xe2x80x9cmasterxe2x80x9d or device 0) and one secondary device (or xe2x80x9cslavexe2x80x9d or device 1). In addition, device electronics for a primary device may need to be aware of whether there is a secondary device present. Typically, a set of small removable 2-pin connectors (called jumpers) on each device determine, among other things, whether the device is a primary or secondary device, and if primary whether there is a secondary device present. Jumper configurations are not standard, they are typically poorly labeled, and they are typically difficult to access without removing a device. Confusion over jumper requirements has led to a great deal of customer frustration and numerous phone calls to customer service organizations.
Personal computer peripheral devices commonly integrate most of the input/output (I/O) electronics along with the device electronics, using industry specifications called Integrated Drive Electronics (IDE). IDE devices may be designed for many different host computer bus systems, including ATA. For Intel compatible personal computers, cabling specifications and signal definitions may be referred to as ATA specifications or IDE specifications, depending on the manufacturer. For Intel compatible personal computers, the most common ATA/IDE mass memory interface cable is a 40-conductor ribbon cable. Connector pin/socket 39 provides a signal called Drive Active/Slave Present (DASP). DASP drivers are implemented as open-collector drivers on the ATA devices. DASP is asserted by driving the line low. DASP is a time multiplexed signal that may be asserted by either device. The signal is used during a power-up/reset initialization phase to indicate that a secondary (slave) device is present, and is used later to indicate device activity. During power-on initialization, if a secondary device is present, the secondary device asserts DASP within 400 milliseconds of power-on. If no secondary device is present, the primary device may assert DASP after a delay of 450 milliseconds after power-on. If a secondary device is present, the secondary device deasserts DASP following the receipt of a valid command or after the secondary device is ready, or after 31 seconds, whichever comes first. Once DASP is deasserted, either device can assert DASP to light a device-activity light emitting diode (LED). If a secondary device is not present, the primary device is then automatically further configured as a primary device with no secondary device present and the primary device then responds to commands sent to a secondary device. If a secondary device asserts DASP within the proper time window, the primary device is automatically further configured as a primary device with a secondary device present and the primary device then does not respond to commands sent to the secondary device. There is no general standard for a provision for a host computer to be able to command a primary device to change its configuration. That is, once a primary device configures itself as xe2x80x9cwith secondaryxe2x80x9d or xe2x80x9cwithout secondaryxe2x80x9d there is no general standard way to override that autoconfiguration.
One industry effort to eliminate the need for configuration jumpers for determination of primary/secondary device status is included in an industry specification called Plug and Play ATA. In Plug and Play ATA, primary/secondary device status is determined by which one of two cable connectors is attached to a device. Plug and Play ATA dedicates one wire of a standard interface cable to a signal called Cable Select. The Cable Select line is grounded by the host computer. In the interface cable, the Cable Select line connects to its corresponding socket in the connector for a primary device, and does not connect to its corresponding socket in the connector for a secondary device. If a device connected to the interface cable detects that the Cable Select line is grounded, the device configures itself to be a primary device, and if the device does not detect a ground potential on the Cable Select line the device configures itself to be a secondary device.
Automatic address determination is also a problem for the I/O boards on the I/O bus of the host computer. For Intel compatible computers, one industry specification for automatically configuring I/O boards for the ISA bus is called the Plug and Play ISA Standards. For ISA Plug and Play, each compatible I/O card has a unique identifier that includes a vendor identifier and a serial number. Each compatible I/O card can read its own identifier. The host computer first places all the cards into a configuration mode. Then the host computer drives a line with a series of transitions indicating sequential bit positions within each identifier. At the end of each series, at most only one I/O card remains active. The sequence of bits from the host computer logically progresses from least-significant-bit to mostsignificant-bit for the identifiers. At each bit position in the sequence, each compatible I/O card determines whether its identifier has a logical one in the same bit position. If the I/O card identifier has a logical one in the same position, the I/O card drives the bus to a particular value. If at any bit position in the sequence an I/O card identifier has a logical zero at the bit position, the I/O card does not drive the bus, and determines whether any other card is driving the bus to the particular value. If at any bit position in the sequence an I/O card identifier has a logical zero at the bit position and another card is driving the bus to the particular value, the I/O card having a logical zero at the bit position ceases to participate in the remainder of the sequence. At the end of all the bit positions for an identifier, one card remains. This card is assigned a logical device number by the host. The sequence is then repeated to isolate another card and so forth until all cards have been assigned a logical device number.
Another common interface standard for ATA devices is the Small Computer System Interface (SCSI). SCSI also requires a unique ID for each device. An industry group has proposed a set of specifications, called Plug and Play SCSI, which among other things provides automatic assignment of unique SCSI IDs. The particular protocol for assignment of unique IDs is called SCSI Configured AutoMagically (SCAM). Each SCAM compatible device has a default ID saved in a non-volatile device memory. A SCAM master device first commands each of the other SCAM devices, one at a time, to go into an inactive state. Then, the master device uses a protocol similar to the protocol for ISA Plug and Play to isolate each device for assignment of a SCSI address.
Plug and Play ATA substantially improves ease of use when it is implemented for new systems. However, many new devices need to be installed into systems that predate the Plug and Play ATA specifications. In addition, Plug and Play ATA is not a universally adopted standard, so that devices installed into some new systems still may require jumper configuration.
There is a need for further improvement for automatic determination of primary/secondary device status when a new device is installed, particularly for devices being installed into older or non-standard systems.
Multiple methods of autoconfiguration are provided in which a jumperless device can be automatically configured as primary or secondary when installed into a system. For each example embodiment, there are four possible cases: (1) no other device present, (2) legacy primary device present, (3) legacy secondary device present and (4) unconfigured jumperless device present.
In each embodiment, the host computer interrogates the devices to determine whether a legacy device or configured jumperless device is present. An unconfigured jumperless device does not respond to the host commands. If there is a legacy or configured jumperless device present, the host computer then tells an unconfigured jumperless device its proper configuration.
In the first example embodiment, a jumperless device first waits to see if a legacy secondary device is present. If a secondary device is present, the jumperless device configures itself as a primary device with a secondary device present. If there are two unconfigured jumperless devices, which one becomes primary depends on a relative timing at start-up determined by an electronically readable identification number on each device. If there is no secondary legacy device present, the host computer commands the device configuration for the unconfigured jumperless device(s) after determining whether there is a primary (legacy or newly configured jumperless) device present.
In a second example embodiment, if there are two unconfigured jumperless devices, the host computer transmits or initiates a series of bit positions corresponding to bit positions within device identification numbers. An unconfigured jumperless device asserts DASP if the unconfigured jumperless device has a logical xe2x80x9conexe2x80x9d at the bit position. If a first device detects the presence of another device, the first device configures itself as a primary device with a secondary device present. When all bit positions have been tested, there will be one unconfigured jumperless device remaining. The host sends a command to a primary (legacy or newly configured jumperless) device. If no device responds, the one unconfigured device is commanded to configure itself as a primary device with no secondary device present. Otherwise, the one unconfigured device is commanded to configure itself as a secondary device.
In a third example embodiment, if there is no legacy device present, the jumperless device goes through an arbitration sequence to determine the primary device, dependent on an electronically readable identification number on each device.